#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

const int size =  2000;

void _add2(char* src, int index, int a)
{
	//cout<<src<<endl<<index<<endl<<a<<endl;
	if(index >= strlen(src))
	{
		//cout<<"*"<<endl;
		for(int i = strlen(src); i <= index - 1;i++)
			src[i] = '0';
		src[index] = a + '0';
		src[index+1] = '\0';
		return;
	}

	if(src[index] - '0' + a >= 10)
	{
		src[index] = src[index] + a - 10;
		return _add2(src, index + 1, 1);
	}
	else
		src[index] += a;
}

void add2(char* src, int index, int a)
{
	while(a)
	{
		if(a % 10)
			_add2(src, index, a % 10);
		
		index++;
		a /= 10;
	}
}

void multiplay2(char* s, char* res)
{
	//cout<<"multiplay2: "<<s<<" * "<<res<<" = "<<endl;
	char temp[200];
	temp[0] = '\0';

	int i, j;
	i = j = 0;

	while(s[i] != '\0')
	{
		j = 0;
		while(res[j] != '\0')
		{
			int r = (s[i] - '0') * (res[j] - '0');
			add2(temp, i + j, r);
			j++;
		}
		i++;
	}

	int k = 0;
	while(temp[k] != '\0')
	{
		res[k] = temp[k];
		k++;
	}

	res[k] = '\0';
	//cout<<"multiplay2: "<<res<<endl;
}	

void _arryPower2(char* s, int n, char* res)
{
	if(1 == n)
	{
		for(int i=0;i<=strlen(s);i++)
			res[i] = s[i];
	}
	else if(2 == n)
	{
		multiplay2(s, res);
		multiplay2(s, res);
		return;
	}
	else if(3 == n)
	{
		multiplay2(s, res);
		multiplay2(s, res);
		multiplay2(s, res);
	}
	else if(4 <= n)
	{
		char temp[200];
		temp[0] = '1';
		temp[1] = '\0';

		_arryPower2(s, n/2, temp);
		multiplay2(temp, res);
		multiplay2(temp, res);
		if(n%2 == 1)
			multiplay2(s, res);
	}
}

void print(char* res, int dots)
{
	if(dots <= 0)	//integer
	{
		for(int i=strlen(res)-1;i>=0;i--)
			cout<<res[i];
		for(int i=0;i<-1*dots;i++)
			cout<<"0";
		cout<<endl;
	}
	else
	{
		//delete '0's
		for(int i=0;i<strlen(res);i++)
			if(res[i]=='0')
				res[i] = '#';
			else
				break;

		if(dots >= strlen(res))	//0.xxx
		{
			cout<<".";
			for(int i=0;i< dots - strlen(res);i++)
				cout<<"0";
			for(int i= strlen(res)-1;i>=0 && res[i]!='#';i--)
				cout<<res[i];
			cout<<endl;
		}
		else	//x.xxx
		{	
			int k = 0;
			for(int i=strlen(res)-1;i>=0 && res[i] != '#';i--)
			{
				cout<<res[i];
				k++;
				if(k == strlen(res) - dots)
					cout<<".";
			}
			cout<<endl;
		}
	}
}

void arryPower2(char* s, int n, char* res)
{
	char temp[200];
	int dot = 0;
	int dotflag = 0;
	int sflag = 0;
	int k=0;
	for(int i=0;i<strlen(s);i++)
	{
		if(s[i]>'0'&&s[i]<='9')
			sflag = 1;
		if(s[i] == '.')
			dotflag = 1;

		if(dotflag && s[i] != '.')
			dot++;

		if(sflag && s[i] != '.')
			temp[k++] = s[i];
	}

	temp[k] = '\0';

	for(int i=strlen(temp)-1;i>=0;i--)
		if(temp[i] == '0')
		{
			dot--;
			temp[i] = '\0';
		}
		else
			break;
	
	for(int i=strlen(temp)-1,j=0;i>j;i--,j++)
	{
		char t=temp[i];temp[i]=temp[j];temp[j]=t;
	}

	//cout<<"t:"<<temp<<endl;
	//cout<<"dot:"<<dot<<endl;
	//cout<<"n:"<<n<<endl;
	_arryPower2(temp, n, res);
	//cout<<"res: "<<res<<endl;
	print(res, n * dot);
}

int main()
{
	char res[size];
	
	char s[200];
	int n;

	char a[200], d[200];
	int b;
	int c;
	while(cin>>a>>b)
	{
		//cout<<"a: "<<a<<endl;
		//cout<<"b: "<<b<<endl;
		//multiplay2(a,d);
		//cout<<d<<endl;
		//continue;
		memset(s, 0, sizeof(s));
		s[0] = '1';
		s[1] = '\0';

		arryPower2(a, b, s);
		//cout<<s<<endl;
	}
	return 0;
}
